/**
	************************************************************
	************************************************************
	************************************************************
	*	文件名： 	main.c
	*
	*	作者： 		张继�?
	*
	*	日期�? 		2017-05-08
	*
	*	版本�? 		V1.0
	*
	*	说明�? 		接入onenet，上传数�?和命令控�?
	*
	*	�?改�?�录�?	
	************************************************************
	************************************************************
	************************************************************
**/

//单片机头文件
#include "stm32f10x.h"

//网络协�??�?
#include "onenet.h"

//网络设�??
#include "esp8266.h"

//�?件驱�?
#include "delay.h"
#include "usart.h"
#include "i2c.h"
#include "beep.h"
#include "sht20.h"
#include "led.h"
#include "Key.h"
//C�?
#include <string.h>


#define ESP8266_ONENET_INFO		"AT+CIPSTART=\"TCP\",\"mqtts.heclouds.com\",1883\r\n"

uint8_t temp_data,humi_data, led_status;
/*
************************************************************
*	函数名称�?	Hardware_Init
*
*	函数功能�?	�?件初始化mqtts.heclouds.com:1883
*
*	入口参数�?	�?
*
*	返回参数�?	�?
*
*	说明�?		初�?�化单片机功能以及�?�接设�??
************************************************************
*/
void Hardware_Init(void)
{
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	//�?�?控制器分组�?�置

	Delay_Init();									//systick初�?�化
	
	Usart1_Init(115200);							//串口1，打印信�?�?
	
	Usart2_Init(115200);							//串口2，驱动ESP8266�?
	
	//IIC_Init();										//�?件IIC初�?�化
	
	//Beep_Init();									//蜂鸣器初始化
	
    LED_GPIO_Config();
    
    Key_Init();
    
	UsartPrintf(USART_DEBUG, " Hardware init OK\r\n");
	
}

/*
************************************************************
*	函数名称�?	main
*
*	函数功能�?	
*
*	入口参数�?	�?
*
*	返回参数�?	0
*
*	说明�?		
************************************************************
*/
int main(void)
{
	int i = 0;
    uint8_t KeyNum = 0;
	unsigned short timeCount = 0;	//发送间隔变�?
	
	unsigned char *dataPtr = NULL;
	
	Hardware_Init();				//初�?�化外围�?�?
	DelayXms(500);
	ESP8266_Init();					//初�?�化ESP8266
	
	UsartPrintf(USART_DEBUG, "Connect MQTTs Server...\r\n");
	while(ESP8266_SendCmd(ESP8266_ONENET_INFO, "CONNECT"))
		DelayXms(500);
	
	while(OneNet_DevLink())			//接入OneNET
		DelayXms(500);
	OneNET_Subscribe();
//	
//	Beep_Set(BEEP_ON);				//鸣叫提示接入成功
//	DelayXms(250);
//	Beep_Set(BEEP_OFF);
	
	while(1)
	{
		
		if(++timeCount >= 100)									//发送间�?5s
		{
			//SHT20_GetValue();
			
			UsartPrintf(USART_DEBUG, "OneNet_SendData\r\n");
			OneNet_SendData();									//发送数�?
			
			timeCount = 0;
			ESP8266_Clear();
		}
		
		dataPtr = ESP8266_GetIPD(0);
		if(dataPtr != NULL)
			OneNet_RevPro(dataPtr);


//		LED_ON;
//		DelayXms(500);
//        LED_OFF;
//        DelayXms(500);

    if(USART1_RxFlag == 1)
    {
        temp_data = RxRecv[0];
        humi_data = RxRecv[1];
        
//			for ( i = 0; i < j; i ++)		//遍历数组
//			{
//				Serial_SendByte(RxRecv[i]);		//依次调用Serial_SendByte发送每个字节数据
//			}
        
        j = 0;
        USART1_RxFlag = 0;
    }
        
        KeyNum = Key_GetNum();		//获取按键键码
		
		if (KeyNum == 2)			//按键2按下
		{
			LED_Turn();			//LED2翻转
            KeyNum = 0;
		}
        if (GPIO_ReadOutputDataBit(LED1_GPIO_PORT, LED1_GPIO_PIN) == 0)
        {
            led_status = 1;
        }
        else
        {
            led_status = 0;
        }
        //LED_Turn();

        DelayXms(10);
	
	}

}
